package com.zg.common.core.dao.scf.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zg.common.core.dao.BaseEntity;
import com.zg.common.core.dao.ConditionType;
import com.zg.common.core.dao.QueryCondition;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * DESCRIPTION
 *
 * @author zhanfeng.liang
 * @since 2025-07-22
 */

@Data
@NoArgsConstructor
@TableName("SCF_PRODUCT")
public class Product extends BaseEntity {
    /**
     * 授信名称，对应表单“授信名称”输入选择器，必填
     */
    private Long creditId;

    /**
     * 产品编号，对应表单“产品编号”（系统默认生成，置灰）
     */
    private String productCode;

    /**
     * 金融机构，对应表单“金融机构”输入选择器（登录默认回显），必填
     */
    private Long bankId;

    /**
     * 产品有效期开始，对应表单“产品有效期”开始日期选择器，必填
     */
    private Date productBegin;

    /**
     * 产品有效期结束，对应表单“产品有效期”结束日期选择器，必填
     */
    private Date productEnd;

    /**
     * 产品利率类型，对应表单“产品利率类型”单选（年/月/日利率），必填
     */
    private String interestRateType;

    /**
     * 贷款时限类型，对应表单“贷款时限类型”单选（年/月/日），必填
     */
    private String loanTermType;

    /**
     * 还款方式，对应表单“还款方式”多选（逗号分隔），必填
     */
    private String repaymentMethod;

    /**
     * 放款账户，对应表单“放款账户”输入框，必填
     */
    private String disbursementAccount;

    /**
     * 逾期利息下限（%），对应表单“逾期利息”区间开始，必填
     */
    private BigDecimal overdueInterestLow;

    /**
     * 逾期利息上限（%），对应表单“逾期利息”区间结束，必填
     */
    private BigDecimal overdueInterestHigh;

    /**
     * 汇票开立，对应表单“汇票开立”多选（逗号分隔），必填
     */
    private String billType;

    /**
     * 产品描述，对应表单“产品描述”文本框（选填，200字）
     */
    private String description;

    /**
     * 产品特色，对应表单“产品特色”文本框（选填，200字）
     */
    private String features;

    /**
     * 产品来源，对应表单“产品来源”文本框（选填，200字）
     */
    private String source;

    /**
     * 返佣情况，对应表单“返佣情况”文本框（选填，200字）
     */
    private String commissionInfo;

    /**
     * 保证金情况，对应表单“保证金情况”文本框（选填，200字）
     */
    private String depositInfo;

    /**
     * 兜底情况，对应表单“兜底情况”文本框（选填，200字）
     */
    private String guaranteeInfo;

    /**
     * 适用客户，对应表单“适用客户”文本框（选填，200字）
     */
    private String applicableCustomers;

    /**
     * 申请条件，对应表单“申请条件”文本框（选填，200字）
     */
    private String applicationConditions;

    /**
     * 提交材料，对应表单“提交材料”文本框（选填，200字）
     */
    private String submitMaterials;

    /**
     * 申请流程，对应表单“申请流程”文本框（选填，200字）
     */
    private String applicationProcess;

    /**
     * 授信模式，对应表单“授信模式”选择后自动回显（产品/综合授信），必填
     */
    private String creditMode;

    /**
     * 产品名称，对应表单“产品名称”输入框，必填
     */
    private String productName;

    /**
     * 产品流程，对应表单“产品流程”选择流程，必填
     */
    private String productProcess;

    /**
     * 产品额度下限（万元），对应表单“产品额度”区间开始，必填
     */
    private BigDecimal amountLow;

    /**
     * 产品额度上限（万元），对应表单“产品额度”区间结束，必填
     */
    private BigDecimal amountHigh;

    /**
     * 产品利率下限（%），对应表单“产品利率”区间开始，必填
     */
    private BigDecimal interestLow;

    /**
     * 产品利率上限（%），对应表单“产品利率”区间结束，必填
     */
    private BigDecimal interestHigh;

    /**
     * 贷款时限下限（年），对应表单“贷款时限”区间开始，必填
     */
    private Integer loanTermLow;

    /**
     * 贷款时限上限（年），对应表单“贷款时限”区间结束，必填
     */
    private Integer loanTermHigh;

    /**
     * 还款结果，对应表单“还款结果”多选（逗号分隔），必填
     */
    private String repaymentResult;

    /**
     * 放款审批时间，对应表单“放款审批时间”日期选择器，必填
     */
    private Date disbursementApprovalDate;

    /**
     * 贴现利率下限（%），对应表单“贴现利率”区间开始，选填
     */
    private BigDecimal discountInterestLow;

    /**
     * 贴现利率上限（%），对应表单“贴现利率”区间结束，选填
     */
    private BigDecimal discountInterestHigh;

    /**
     * 汇票交付，对应表单“汇票交付”多选（逗号分隔），选填
     */
    private String billDelivery;

    private String state;

    @TableField(exist = false)
    @QueryCondition(type = ConditionType.IN, filed = "creditId")
    private List<Long> creditIds;


    @TableField(exist = false)
    private String creditName;

    @TableField(exist = false)
    private String productType;

    @TableField(exist = false)
    private String bankName;
}
